home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / net / URLStreamHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  5.1 KB  |  353 lines

  1. package java.net;
  2.  
  3. import java.io.IOException;
  4. import sun.net.util.IPAddressUtil;
  5.  
  6. public abstract class URLStreamHandler {
  7.    protected abstract URLConnection openConnection(URL var1) throws IOException;
  8.  
  9.    protected URLConnection openConnection(URL var1, Proxy var2) throws IOException {
  10.       throw new UnsupportedOperationException("Method not implemented.");
  11.    }
  12.  
  13.    protected void parseURL(URL var1, String var2, int var3, int var4) {
  14.       String var5 = var1.getProtocol();
  15.       String var6 = var1.getAuthority();
  16.       String var7 = var1.getUserInfo();
  17.       String var8 = var1.getHost();
  18.       int var9 = var1.getPort();
  19.       String var10 = var1.getPath();
  20.       String var11 = var1.getQuery();
  21.       String var12 = var1.getRef();
  22.       boolean var13 = false;
  23.       boolean var14 = false;
  24.       if (var3 < var4) {
  25.          int var15 = var2.indexOf(63);
  26.          var14 = var15 == var3;
  27.          if (var15 != -1 && var15 < var4) {
  28.             var11 = var2.substring(var15 + 1, var4);
  29.             if (var4 > var15) {
  30.                var4 = var15;
  31.             }
  32.  
  33.             var2 = var2.substring(0, var15);
  34.          }
  35.       }
  36.  
  37.       int var22 = 0;
  38.       boolean var16 = var3 <= var4 - 4 && var2.charAt(var3) == '/' && var2.charAt(var3 + 1) == '/' && var2.charAt(var3 + 2) == '/' && var2.charAt(var3 + 3) == '/';
  39.       if (!var16 && var3 <= var4 - 2 && var2.charAt(var3) == '/' && var2.charAt(var3 + 1) == '/') {
  40.          var3 += 2;
  41.          var22 = var2.indexOf(47, var3);
  42.          if (var22 < 0) {
  43.             var22 = var2.indexOf(63, var3);
  44.             if (var22 < 0) {
  45.                var22 = var4;
  46.             }
  47.          }
  48.  
  49.          var8 = var6 = var2.substring(var3, var22);
  50.          int var17 = var6.indexOf(64);
  51.          if (var17 != -1) {
  52.             var7 = var6.substring(0, var17);
  53.             var8 = var6.substring(var17 + 1);
  54.          } else {
  55.             var7 = null;
  56.          }
  57.  
  58.          if (var8 != null) {
  59.             if (var8.length() > 0 && var8.charAt(0) == '[') {
  60.                if ((var17 = var8.indexOf(93)) <= 2) {
  61.                   throw new IllegalArgumentException("Invalid authority field: " + var6);
  62.                }
  63.  
  64.                String var18 = var8;
  65.                var8 = var8.substring(0, var17 + 1);
  66.                if (!IPAddressUtil.isIPv6LiteralAddress(var8.substring(1, var17))) {
  67.                   throw new IllegalArgumentException("Invalid host: " + var8);
  68.                }
  69.  
  70.                var9 = -1;
  71.                if (var18.length() > var17 + 1) {
  72.                   if (var18.charAt(var17 + 1) != ':') {
  73.                      throw new IllegalArgumentException("Invalid authority field: " + var6);
  74.                   }
  75.  
  76.                   ++var17;
  77.                   if (var18.length() > var17 + 1) {
  78.                      var9 = Integer.parseInt(var18.substring(var17 + 1));
  79.                   }
  80.                }
  81.             } else {
  82.                var17 = var8.indexOf(58);
  83.                var9 = -1;
  84.                if (var17 >= 0) {
  85.                   if (var8.length() > var17 + 1) {
  86.                      var9 = Integer.parseInt(var8.substring(var17 + 1));
  87.                   }
  88.  
  89.                   var8 = var8.substring(0, var17);
  90.                }
  91.             }
  92.          } else {
  93.             var8 = "";
  94.          }
  95.  
  96.          if (var9 < -1) {
  97.             throw new IllegalArgumentException("Invalid port number :" + var9);
  98.          }
  99.  
  100.          var3 = var22;
  101.          if (var6 != null && var6.length() > 0) {
  102.             var10 = "";
  103.          }
  104.       }
  105.  
  106.       if (var8 == null) {
  107.          var8 = "";
  108.       }
  109.  
  110.       if (var3 < var4) {
  111.          if (var2.charAt(var3) == '/') {
  112.             var10 = var2.substring(var3, var4);
  113.          } else if (var10 != null && var10.length() > 0) {
  114.             var13 = true;
  115.             int var32 = var10.lastIndexOf(47);
  116.             String var34 = "";
  117.             if (var32 == -1 && var6 != null) {
  118.                var34 = "/";
  119.             }
  120.  
  121.             var10 = var10.substring(0, var32 + 1) + var34 + var2.substring(var3, var4);
  122.          } else {
  123.             String var31 = var6 != null ? "/" : "";
  124.             var10 = var31 + var2.substring(var3, var4);
  125.          }
  126.       } else if (var14 && var10 != null) {
  127.          int var33 = var10.lastIndexOf(47);
  128.          if (var33 < 0) {
  129.             var33 = 0;
  130.          }
  131.  
  132.          var10 = var10.substring(0, var33) + "/";
  133.       }
  134.  
  135.       if (var10 == null) {
  136.          var10 = "";
  137.       }
  138.  
  139.       if (var13) {
  140.          while((var22 = var10.indexOf("/./")) >= 0) {
  141.             var10 = var10.substring(0, var22) + var10.substring(var22 + 2);
  142.          }
  143.  
  144.          var22 = 0;
  145.  
  146.          while((var22 = var10.indexOf("/../", var22)) >= 0) {
  147.             if (var22 > 0 && (var4 = var10.lastIndexOf(47, var22 - 1)) >= 0 && var10.indexOf("/../", var4) != 0) {
  148.                var10 = var10.substring(0, var4) + var10.substring(var22 + 3);
  149.                var22 = 0;
  150.             } else {
  151.                var22 += 3;
  152.             }
  153.          }
  154.  
  155.          while(var10.endsWith("/..")) {
  156.             var22 = var10.indexOf("/..");
  157.             if ((var4 = var10.lastIndexOf(47, var22 - 1)) < 0) {
  158.                break;
  159.             }
  160.  
  161.             var10 = var10.substring(0, var4 + 1);
  162.          }
  163.  
  164.          if (var10.startsWith("./") && var10.length() > 2) {
  165.             var10 = var10.substring(2);
  166.          }
  167.  
  168.          if (var10.endsWith("/.")) {
  169.             var10 = var10.substring(0, var10.length() - 1);
  170.          }
  171.       }
  172.  
  173.       this.setURL(var1, var5, var8, var9, var6, var7, var10, var11, var12);
  174.    }
  175.  
  176.    protected int getDefaultPort() {
  177.       return -1;
  178.    }
  179.  
  180.    protected boolean equals(URL var1, URL var2) {
  181.       String var3 = var1.getRef();
  182.       String var4 = var2.getRef();
  183.       return (var3 == var4 || var3 != null && var3.equals(var4)) && this.sameFile(var1, var2);
  184.    }
  185.  
  186.    protected int hashCode(URL var1) {
  187.       int var2 = 0;
  188.       String var3 = var1.getProtocol();
  189.       if (var3 != null) {
  190.          var2 += var3.hashCode();
  191.       }
  192.  
  193.       InetAddress var4 = this.getHostAddress(var1);
  194.       if (var4 != null) {
  195.          var2 += var4.hashCode();
  196.       } else {
  197.          String var5 = var1.getHost();
  198.          if (var5 != null) {
  199.             var2 += var5.toLowerCase().hashCode();
  200.          }
  201.       }
  202.  
  203.       String var8 = var1.getFile();
  204.       if (var8 != null) {
  205.          var2 += var8.hashCode();
  206.       }
  207.  
  208.       if (var1.getPort() == -1) {
  209.          var2 += this.getDefaultPort();
  210.       } else {
  211.          var2 += var1.getPort();
  212.       }
  213.  
  214.       String var6 = var1.getRef();
  215.       if (var6 != null) {
  216.          var2 += var6.hashCode();
  217.       }
  218.  
  219.       return var2;
  220.    }
  221.  
  222.    protected boolean sameFile(URL var1, URL var2) {
  223.       if (var1.getProtocol() == var2.getProtocol() || var1.getProtocol() != null && var1.getProtocol().equalsIgnoreCase(var2.getProtocol())) {
  224.          if (var1.getFile() == var2.getFile() || var1.getFile() != null && var1.getFile().equals(var2.getFile())) {
  225.             int var3 = var1.getPort() != -1 ? var1.getPort() : var1.handler.getDefaultPort();
  226.             int var4 = var2.getPort() != -1 ? var2.getPort() : var2.handler.getDefaultPort();
  227.             if (var3 != var4) {
  228.                return false;
  229.             } else {
  230.                return this.hostsEqual(var1, var2);
  231.             }
  232.          } else {
  233.             return false;
  234.          }
  235.       } else {
  236.          return false;
  237.       }
  238.    }
  239.  
  240.    protected synchronized InetAddress getHostAddress(URL var1) {
  241.       if (var1.hostAddress != null) {
  242.          return var1.hostAddress;
  243.       } else {
  244.          String var2 = var1.getHost();
  245.          if (var2 != null && !var2.equals("")) {
  246.             try {
  247.                var1.hostAddress = InetAddress.getByName(var2);
  248.             } catch (UnknownHostException var4) {
  249.                return null;
  250.             } catch (SecurityException var5) {
  251.                return null;
  252.             }
  253.  
  254.             return var1.hostAddress;
  255.          } else {
  256.             return null;
  257.          }
  258.       }
  259.    }
  260.  
  261.    protected boolean hostsEqual(URL var1, URL var2) {
  262.       InetAddress var3 = this.getHostAddress(var1);
  263.       InetAddress var4 = this.getHostAddress(var2);
  264.       if (var3 != null && var4 != null) {
  265.          return var3.equals(var4);
  266.       } else if (var1.getHost() != null && var2.getHost() != null) {
  267.          return var1.getHost().equalsIgnoreCase(var2.getHost());
  268.       } else {
  269.          return var1.getHost() == null && var2.getHost() == null;
  270.       }
  271.    }
  272.  
  273.    protected String toExternalForm(URL var1) {
  274.       int var2 = var1.getProtocol().length() + 1;
  275.       if (var1.getAuthority() != null && var1.getAuthority().length() > 0) {
  276.          var2 += 2 + var1.getAuthority().length();
  277.       }
  278.  
  279.       if (var1.getPath() != null) {
  280.          var2 += var1.getPath().length();
  281.       }
  282.  
  283.       if (var1.getQuery() != null) {
  284.          var2 += 1 + var1.getQuery().length();
  285.       }
  286.  
  287.       if (var1.getRef() != null) {
  288.          var2 += 1 + var1.getRef().length();
  289.       }
  290.  
  291.       StringBuffer var3 = new StringBuffer(var2);
  292.       var3.append(var1.getProtocol());
  293.       var3.append(":");
  294.       if (var1.getAuthority() != null && var1.getAuthority().length() > 0) {
  295.          var3.append("//");
  296.          var3.append(var1.getAuthority());
  297.       }
  298.  
  299.       if (var1.getPath() != null) {
  300.          var3.append(var1.getPath());
  301.       }
  302.  
  303.       if (var1.getQuery() != null) {
  304.          var3.append('?');
  305.          var3.append(var1.getQuery());
  306.       }
  307.  
  308.       if (var1.getRef() != null) {
  309.          var3.append("#");
  310.          var3.append(var1.getRef());
  311.       }
  312.  
  313.       return var3.toString();
  314.    }
  315.  
  316.    protected void setURL(URL var1, String var2, String var3, int var4, String var5, String var6, String var7, String var8, String var9) {
  317.       if (this != var1.handler) {
  318.          throw new SecurityException("handler for url different from this handler");
  319.       } else {
  320.          var1.set(var1.getProtocol(), var3, var4, var5, var6, var7, var8, var9);
  321.       }
  322.    }
  323.  
  324.    /** @deprecated */
  325.    @Deprecated
  326.    protected void setURL(URL var1, String var2, String var3, int var4, String var5, String var6) {
  327.       String var7 = null;
  328.       String var8 = null;
  329.       if (var3 != null && var3.length() != 0) {
  330.          var7 = var4 == -1 ? var3 : var3 + ":" + var4;
  331.          int var9 = var3.lastIndexOf(64);
  332.          if (var9 != -1) {
  333.             var8 = var3.substring(0, var9);
  334.             var3 = var3.substring(var9 + 1);
  335.          }
  336.       }
  337.  
  338.       String var12 = null;
  339.       String var10 = null;
  340.       if (var5 != null) {
  341.          int var11 = var5.lastIndexOf(63);
  342.          if (var11 != -1) {
  343.             var10 = var5.substring(var11 + 1);
  344.             var12 = var5.substring(0, var11);
  345.          } else {
  346.             var12 = var5;
  347.          }
  348.       }
  349.  
  350.       this.setURL(var1, var2, var3, var4, var7, var8, var12, var10, var6);
  351.    }
  352. }
  353.